STAAD.Pro Help

OS. 簡単なSTAAD.Proマクロ

この例では、STAAD.Pro内で使用できる小規模なマクロを示します。

プログラミングを学ぶときは、アプリケーション、モジュール、または関数の基本的な構造がわかるような簡単なプログラムから始めるのが一般的です。これには、"Hello World"というフレーズのメッセージを画面に表示するプログラムがよく使用されます。この例では、これを拡張して、実用的な用途の基礎も含めます。

注記: このセクションの他の例で、外部プログラムからSTAADのデータをポーリングする方法を紹介しています。
  1. STAAD.Proを開きます。
  2. 「ユーティリティ」リボンタブで、「開発者」グループの「マクロ」ツールを選択します。

    「マクロ」ダイアログが開きます。
  3. 「新規作成」をクリックします。
    「新規マクロファイル名」ダイアログが開きます。
  4. タイトルを「CreateNewView.vbs」と入力し、説明を「Creates a new view from the selected beams」と入力します。
    注記: マクロファイルは、ユーザーアカウントに書き込み権限があるディレクトリであれば、どこに保存してもかまいません。
    STAAD.Pro Script Editorウィンドウが開き、Mainというタイトルのサブルーチンが表示されます。
  5. 説明のコメント行のすぐ後に次のように入力します。
    Dim objOpenSTAAD As Object
    Dim SelBeamsNo As Long
    Dim SelBeams() As Long

    これは、このプログラムで使用されるいくつかのオブジェクトと変数の宣言を提供するために使用されます。

  6. 次の行を入力して、OpenSTAADオブジェクトをインスタンス化します。
    'Launch the OpenSTAAD Object
    Set objOpenSTAAD = GetObject(,"StaadPro.OpenSTAAD")
    注記: アポストロフィ(')で始まる最初の行はコメントです。必須ではありませんが、このようなコメントを追加して、コードが他のユーザーにも(後で自分で見たときにも)明確にわかるようにすることをお勧めします。
  7. 次の行を入力して、ビームが選択されているかを確認する論理チェックを設定します。
    'Get no. of selected beams
    SelBeamsNo = objOpenSTAAD.Geometry.GetNoOfSelectedBeams
    If (SelBeamsNo > 0) Then

    ここでは、OpenSTAADGetNoOfSelectedBeams Geometry関数をテストに使用しています。このテストはif… then… else…文になっていて、以降の手順に続きがあります。

  8. 次の行を入力して、文がtrueの場合(つまり、少なくとも1つのビームが選択されている場合)に実行する内容をプログラムに指示します。

    具体的には、OpenSTAADCreateNewViewForSelection View関数を使用してアクティブな選択範囲から新しいビューを作成します。

    ReDim SelBeams(SelBeamsNo) As Long
    'Create a new view
    objOpenSTAAD.View.CreateNewViewForSelections
  9. 次の行を入力します。

    このマクロがビームが選択されていない状態で実行されたときのために、ここで次の行を使用してフィードバックのメッセージをユーザーに提供することができます。

      Else
      MsgBox "No beams are currently selected.", vbOkOnly
    End If
    ヒント: ここで「Hello World」というメッセージを追加すれば、プログラミングの初歩的な例としてよく使用される従来の例になります。
  10. 次の文を入力して、OpenSTAADオブジェクトのインスタンスを閉じます。
    Set objOpenSTAAD = Nothing

マクロの作成に必要なのはこれだけです。この例は、言うまでもなく、実際にはSTAAD.Pro「新規ビュー」ツールを選択する機能を複製したものにすぎません。ただし、OpenSTAADの他の関数を組み合わせることで、よく使用される一連の機能を自動化し、独自の時短ツールを簡単に作成することができます。

この例では、簡潔にするために、選択についてチェックするモデルエンティティがビームだけになっています(つまり、ビーム要素が選択されている場合にのみ新しいビューが作成されます)。これをノード、プレート、ソリッドなどに簡単に拡張することができます。

このマクロの完全なコードは次のとおりです。

Sub Main()
'DESCRIPTION:Creates a new view from the selected beams.
  Dim objOpenSTAAD As Object
  Dim SelBeamsNo As Long
  Dim SelBeams() As Long
'Launch OpenSTAAD Object
  Set objOpenSTAAD = GetObject(,"StaadPro.OpenSTAAD")
'Get no. of selected beams
  SelBeamsNo = objOpenSTAAD.Geometry.GetNoOfSelectedBeams
  If (SelBeamsNo > 0) Then
    ReDim SelBeams(SelBeamsNo) As Long
'Create a new view
    objOpenSTAAD.View.CreateNewViewForSelections 'SelBeams
  Else
    MsgBox "No beams are currently selected.", vbOkOnly
  End If
  Set objOpenSTAAD = Nothing
End Sub